package com.aust.annotation;

import java.lang.reflect.Method;

public class Test3 {

    public void test1() {
        System.out.println("test1");
    }

    @MyTest
    public void test2() {
        System.out.println("test2");
    }

    @MyTest
    public void test3() {
        System.out.println("test3");
    }

    @MyTest
    public void test4() {
        System.out.println("test4");
    }

    public static void main(String[] args) throws Exception {

        /**
         * 创建对象
         */
        Test3 a = new Test3();

        /**
         * 1.获取class对象
         */
        Class<Test3> test3Class = Test3.class;

        /**
         * 2.提取全部成员方法
         */
        Method[] declaredMethods = test3Class.getDeclaredMethods();

        /**
         * 遍历方法数组
         * 判断是否存在@MyTest数组
         * 存在，即触发方法执行
         */
        for (Method declaredMethod : declaredMethods) {
            if (declaredMethod.isAnnotationPresent(MyTest.class)) {
                declaredMethod.invoke(a);
            }
        }

    }

}
